package book;

import ioperations.DelOperation;
import user.AdminUser;
import user.NormalUser;
import user.User;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 苏李涛
 * Date: 2024-05-24
 * Time: 19:51
 */
public class Main {

    //登陆界面
    public static User login() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = scanner.nextLine();

        System.out.println("请输入你的身份: 1:管理员  2:普通用户");
        int choice = scanner.nextInt();
        if (choice == 1) {
            return new AdminUser(name);

        }else {
            return new NormalUser(name);
        }

    }

    public static void main(String[] args) {
        //实例化书架
        BookList bookList = new BookList();

        //通过返回值，向上转型，确定用户
        //这里的user是，返回的（AdminUser），或者（NormalUser）
        User user = login();


        while (true) {

            //然后，通过返回信息，调用恰当的菜单
            int choice = user.menu();//发生了，动态绑定
           /**
            * 根据choice,返回值看看，调用了哪个方法
            *
            * 1.哪个对象？
            * 答：User user = login();
            *
            * 2.哪个方法？-》进一步，还要确定，当前对象，包含了这些方法
            *答：在构造方法【return new AdminUser(name)】运行时，会初始化好，对应的操作对象。
            *
            * 注意：后面通过父类对象，调用方法，（int choice = user.menu();），通过choice判断
            * 调用了，哪个方法 ，接下来就要对，父类，进行操作
            */

           user.DoIOperation(choice, bookList);
       }

    }

}
